home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / blit.arc / LBITBLT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1985-05-23  |  1.5 KB  |  56 lines

  1. /*
  2.  * name:         lbitblt
  3.  *
  4.  * description: bitblt the source rectangle rect in layer sl
  5.  *               to the corresponding rectangle with origin pt
  6.  *               in the destination layer dl. the bitmap hb is
  7.  *               an optional halftone pattern.
  8.  *
  9.  * synopsis:     lbitblt (sl, rect, dl, pt, hb, f)
  10.  *              struct layer    *sl;
  11.  *              struct rectangle    *rect;
  12.  *              struct layer    *dl;
  13.  *              struct point    *pt;
  14.  *              struct bitmap   *hb;
  15.  *              int      f;
  16.  *
  17.  * globals:     pass ()  (pass.c)
  18.  *             delta     (r/w)
  19.  *
  20.  * calls:       layerop  (layerop.c)
  21.  *             lblt      (lblt.c)
  22.  *
  23.  * called by:   this is a top level function.
  24.  */
  25. #include "layers.h"
  26.  
  27. struct point delta;
  28.  
  29. lbitblt (sl, rect, dl, pt, hb, f)
  30. struct layer  *sl;
  31. struct rectangle  *rect;
  32. struct layer  *dl;
  33. struct point  *pt;
  34. struct bitmap *hb;                     /* halftone bitmap */
  35. int    f;
  36. {
  37.    struct listelement *srclist;
  38.    struct listelement *ss;
  39.    struct point     p;
  40.  
  41.    int      pass ();
  42.  
  43.    srclist = null;
  44.    delta.x = (pt -> x) - (rect -> origin.x);
  45.    delta.y = (pt -> y) - (rect -> origin.y);
  46.    (void) layerop (sl, pass, rect, &srclist, null, null, null);
  47.    for (ss = srclist; ss != null; ss = ss -> lst_next) {
  48.    /*
  49.     * ss = each element of srclist
  50.     */
  51.        p.x = (ss -> lst_rect.origin.x) + delta.x;
  52.        p.y = (ss -> lst_rect.origin.y) + delta.y;
  53.        (void) lblt (dl, ss -> lst_bp, &(ss -> lst_rect), hb, &p, f);
  54.    }
  55. }
  56.